The invention relates to a multi-port bridge, for a local area network. More particularly, the invention relates to a technique for optimizing cut-through for broadcast and multi-cast data packets in a multi-port bridge for a local area network.
Nodes of a local area network (LAN) are typically interconnected by a shared transmission medium. The amount of data traffic that the shared transmission medium can accommodate, however, is limited. For example, only one node at a time can successfully transmit data to another node over the shared transmission medium. If two or more nodes simultaneously attempt to transmit data, a data collision occurs, which tends to corrupt the data being transmitted. Thus, nodes that share a transmission medium are considered to be in a same collision domain.
A Multi-port bridge allows simultaneous communication between nodes of the LAN by segmenting the LAN into multiple collision domains (also referred to as network segments or LAN segments), each segment having a corresponding transmission medium.
FIG. 1 illustrates a conventional local area network including a multi-port bridge 10. The multi-port bridge 10 has eight ports A-H, though the number of ports can vary. Each port A-H is connected to a segment 11-18 of the LAN. Each segment 11-18 typically includes one or more nodes 19-34, such as a workstation, a personal computer, a data terminal, a file server, a printer, a facsimile, a scanner or other conventional digital device. Each of the nodes 19-34 has an associated node address (also referred to as a medium access control (MAC) address) which uniquely identifies the node. The nodes 19-34 are configured to send data, one to another, in the form of discrete data packets.
When the LAN operates according to Ethernet standards, such as the Institute of Electrical and Electronics Engineers (IEEE) 802.3 standard, data is communicated in the form of discrete packets. FIG. 2 illustrates a conventional IEEE 802.3 data packet 40. The data packet 40 includes an eight byte long pre-amble 41 which is generally utilized for synchronizing a receiver to the data packet 40. The pre-amble 41 includes seven bytes of pre-amble and one byte of start-of-frame. Following the pre-amble 41, the data packet 40 includes a six-byte-long destination address 42, which is the node address of a node which is an intended recipient for the data packet 40. Next, the data packet 40 includes a six-byte-long source address 43, which is the node address of a node which originated the data packet 40. Following the source address 43 is a two-byte length field 44. Following the length field 44 is a data field 45. The data field 45 can be up to 1500 bytes long. Finally, the data packet 40 includes a two-byte frame check field 46 which allows a recipient of the data packet 40 to determine whether an error has occurred during transmission of the data packet 40.
A broadcast packet is one that is intended by its originating node to be received by every other node of the LAN. Accordingly, when the multi-port bridge 10 receives a broadcast packet, the packet is directed to all ports of the multi-port bridge 10. An example of a broadcast packet is a xe2x80x9ckeep alivexe2x80x9d packet. In accordance with the IEEE 802.3 standard, each node periodically broadcasts a xe2x80x9ckeep alivexe2x80x9d packet which informs the other nodes of the LAN of the continued presence of the sending node in the LAN.
A multi-cast packet is one that is intended to be received by each of a selected group of nodes of a LAN. For example, a virtual LAN (VLAN) may include a subset of nodes of a larger LAN. When a node included in the VLAN group sends a packet, the packet can be multi-cast to each other member of the VLAN group. Typically, a multi-cast packet is identified when the first bit of its destination address is a logical one. The source address of a multi-cast packet identifies the originating node which can then be utilized to identify the VLAN group of which the originating node is a member.
A uni-cast packet is one which is intended to be received by a single destination node. Typically, a uni-cast packet is identified by the first bit of the destination address for the packet being a logical zero. The destination node for the uni-cast packet is identified by the remaining bits of the destination address included in the packet.
Because xe2x80x9ckeep alivexe2x80x9d packets are sent throughout the LAN with regularity, the multi-port bridge 10 tends to devote a significant portion of its packet handling capacity to forwarding of such xe2x80x9ckeep alivexe2x80x9d packets. This reduces the ability of the multi-port bridge 10 to forward other packets to their intended destinations. Thus, problems can arise when the capabilities of the multi-port bridge 10 are exceeded by network demand. When data packets 40 are received by the multi-port bridge 10 at a rate that is higher than the rate at which the multi-port bridge 10 can appropriately perform a learning operation and a look-up operation for each packet 40 and, then, forward the packet, the multi-port bridge 10 becomes a source of network congestion. This problem is exacerbated as network users place increasing demands on the network.
Therefore, what is needed is improved technique for increasing the data packet handling capacity in a multi-port bridge for a local area network. What is further needed is a technique for reducing the demand placed on such a multi-port bridge for forwarding broadcast and multi-cast data packets.
The invention is a technique for optimizing cut-through for broadcast and multi-cast data packets in a multi-port bridge for a local area network (LAN). The multi-port bridge includes a plurality of ports which are each coupled to a data bus. Packet buffers are also coupled to the data bus for temporarily storing data packets undergoing transfer between the ports. A source port for a data packet receives the packet from a segment of the LAN associated with the source port and stores it in the packet buffers. A packet stored in the packet buffers can be retrieved by an appropriate destination port for the packet and loaded into a first-in, first-out transmit packet store included in the destination port. As the packet is being loaded into the transmit packet store, the packet is transmitted to the segment of the LAN associated with the destination port. A packet can also be received by the destination port directly from the source port while the source port is storing the packet in the packet buffers, assuming the transmit packet store of the destination port is not currently occupied by another packet being transmitted by the destination port.
A broadcast packet store is also provided in the destination port for receiving broadcast and multi-cast data packets directly from the source port while the source port is storing such a broadcast or multi-cast packet in the packet buffers, even when the destination port is busy transmitting a prior packet. The broadcast or multi-cast packet can then be transmitted to the segment of the LAN associated with the destination port when the destination port completes transmitting the prior packet.
A broadcast packet controller included in the destination port is normally dormant and becomes active when the following conditions are present: (1) the destination port is currently busy transmitting another packet; (2) a broadcast or multi-cast packet is received by another port; and (3) the broadcast packet store of the destination port is empty. When these conditions are all present, the broadcast packet controller stores the broadcast or multi-cast packet in t,he broadcast packet store when the packet appears on the data bus while it is being stored in the packet buffers by the source port. In addition, the broadcast packet controller conditions the destination port to transmit the packet from the broadcast packet store when the port becomes available to transmit the packet.
Because each broadcast and multi-cast packet is generally transmitted by multiple ports, the broadcast packet store minimizes the number of ports which need to retrieve such a broadcast or multi-cast packet from the packet buffers and thereby minimizes bandwidth of the data bus occupied by retrieving broadcast and multi-cast data packets from the packet buffers.
In accordance with an aspect of the present invention, a port in a multi-port bridge for a LAN includes: a transmit packet store to receive packets to be transmitted to a segment of the LAN associated with the port; a broadcast packet store to receive a broadcast packet to be transmitted to a segment of the LAN wherein the broadcast packet store receives the broadcast packet when the transmit packet store is occupied by a prior packet; and a transceiver coupled to the transmit packet store and to the broadcast packet store for transmitting the prior packet and the broadcast packet to the segment of the LAN
In accordance with another aspect of the present invention, a port in a multi-port bridge for a LAN includes: a transmit packet store to receive packets to be transmitted to a segment of the LAN associated with the port; a broadcast packet store to receive broadcast and multi-cast packets to be transmitted to a segment of the LAN wherein the broadcast packet store does not receive uni-cast packets; and a transceiver coupled to the transmit packet store and to the broadcast packet store for transmitting the prior packet and the broadcast packet to the segment of the LAN.
In accordance with yet another aspect of the present invention, a multi-port bridge for a LAN includes: a source port to receive a broadcast packet from a segment of the LAN associated; with the source port; a data bus coupled to the source port to communicate the broadcast packet; a packet buffer coupled to the data bus to receive the broadcast packet from the data bus; and a destination port coupled to the data bus to receive the broadcast packet wherein the destination port receives the broadcast packet from the data bus when the destination port is busy transmitting a prior packet to a segment of the LAN associated with the destination port.
In accordance with still another aspect of the present invention, a method of directing a broadcast packet through a multi-port bridge for a LAN includes steps of: receiving a broadcast packet into a source port from a segment of the LAN; transferring the broadcast packet to a packet buffer; receiving the broadcast packet into a first store included in a destination port simultaneously with the step of transferring when the first store is not occupied by a prior packet; and receiving the broadcast packet into a second store included in the destination port simultaneously with the step of transferring when the first store is occupied by the prior packet.
In accordance with a further aspect of the present invention, an apparatus for directing broadcast packets through a multi-port bridge for a LAN includes: source port means for receiving a broadcast packet from a segment of the LAN; packet buffer means coupled to the source port means for receiving the broadcast packet from the source port means; and destination port means coupled to the packet buffer means and to the source port means wherein the destination port means includes: first, storage means for receiving the broadcast packet when the first storage means is not occupied by a prior packet; and second storage means for receiving the broadcast packet when the first storage means is occupied by a prior packet.
In accordance with a still further aspect of the present invention, a multi-port bridge for a LAN includes: a plurality of ports to communicate packets with an associated segment of the LAN; a data bus coupled to each of the plurality of ports to communicate packets among the ports; and a packet buffer coupled to the data bus to temporarily store packets undergoing communication between the ports; wherein at least one of the plurality of ports includes a transmit packet store to receive packets to be transmitted by the port to the segment of the LAN associated with the port and a broadcast packet store to receive broadcast packets to be transmitted by the port to the segment of the LAN associated with the port wherein the broadcast packet store receives a broadcast packet only when the transmit packet store is occupied.